package com.zjl.redis.old.Redis6.持久化;

/**
 * ➢RDB.//相对于  TCP/UDP    中的UDP
 * 在指定的时间间隔内将内存中的数据集快照写入磁盘,
 * 也就是行话讲的Snapshot快照，它恢复时是将快照文件直接
 * 读到内存里。
 *
 * ➢备份是如何执行的
 * ●Redis会 单独创建(fork)一个子进程来进行持久化，
 * 会先将数据写入到一个临时文件中，
 * 待持久化过程都结束了，再用这个临时文件替换上次持久化好的文件。
 * 整个过程中，主进程是不进行任何I0操作的,
 * 这就确保了极高的性能如果需要进行大规模数据的恢复，
 * 且对于数据恢复的完整性不是非常敏感，
 * 那RDB方式要比AOF方式更加的高效。
 * RDB的缺点是最后一次持久化后的数据可能丢失。
 *
 * 在Linux程序中，fork()会产生一个和父进程
 * 完全相同的子进程，但子进程在此后多会exec系统
 * 调用，出于效率考虑，Linux中引入了“写时复制技术'
 * -般情况父进程和子进程会共用同--段物
 * 理内存，只有进程空间的各段的内容要发生变化时,
 * 才会将父进程的内容复制一份给子进程,
 *
 * redis 文件下.conf//配置文件
 * dbfilename dump.rdb//这个是保存的文件名字  可修改
 * dir ./    保存的目录  相对于这个文件的位置
 *
 * save  是保存策率
 * save 900 1//900秒改一次        会保存
 * save 300 10//300秒改十次       会保存
 * save 60 10000//60秒改10000次   会保存
 * 正常关闭                       会保存
 * save vs bgsave//只管保存   其他不管全部阻塞
 *
 * ➢stop-writes-on-bgsave-error yes
 *  当Redis无法写入磁盘的话， 直接关掉Redis的写操作
 * ➢rdbcompression yes
 *  进行rdb保存时，将文件压缩
 * ➢rdbchecksum yes
 * 在存储快照后，还可以让Redis使用CRC64算法来进行数
 * 据校验，但是这样做会增加大约10%的性能消耗，如果希
 * 望获取到最大的性能提升，可以关闭此功能
 *
 *
 */

/**
 * rdb  优缺点
 * ➢rdb的优点  相对与aof
 * ●节省磁盘空间。//RDB只保存是数据    aof存的是指令
 * ●恢复速度快
 *
 * ➢rdb的缺点
 * 虽然Redis在fork时使用了写时拷贝技术,
 * 但是如果数据庞大时还是比较消耗性能。
 * 在备份周期在一定间隔时间做一次备份, 所以如果
 * Redis意外down掉的话，就会丢失最后一次快照后的所
 * 有修改。
 */
public class RDB {

}
